1. Field of Invention
Embodiments of the present invention relate to techniques for providing context information about an event to an event handling component so that the event handling component is not required to seek out the context information to determine how to handle the event.
2. Discussion of Related Art
Computer systems, such as those including a client and server in communication with one another, may perform a number of operations that may be managed by a component of the computer system. For example, in a computer system where the client is accessing a data store via the server, the server—or another component of the computer system—may determine whether the operation is permitted according to rules set up for performing access operations.
In many cases, the component making the decision regarding whether the operation is permitted may require multiple types of information on the operation to determine whether the operation is permitted. For example, in some cases the rules for performing access operations may dictate that only certain users of the computer system are permitted to perform access operations, and the component may need to be aware of which user is performing the operation to determine whether the operation is permitted.
The information used to make the decision on whether to permit the operation may not be immediately available to the component upon receiving notification of the operation. The component making the decision therefore may be required to retrieve from other sources the additional information to be capable of making the decision.
FIG. 1 shows one example of a computer system that retrieves additional information to enable it to make a decision regarding whether to permit an operation. In the computer system of FIG. 1, a client 100 is attempting to access a data store 104 via a file system server 102 by transmitting an operation request in communication 1 to the file system server 102. In communication 2, the file system server 102 passes information regarding the operation to another component 106 that complements a content management system for the data on the store 104. The component 106 is adapted to determine whether the operation is permitted, based on comparing information about the operation to content management rules regarding operations of the type requested by client 100. As described above, however, the information regarding the operation exchanged in communication 2 is not sufficient for the component 106 to determine whether to permit the operation. In many cases, the information transmitted in communication 2 by the server 102 may be nothing more than what was transmitted in communication 1 by the client 100. For example, the content management system of component 106 may need to determine whether the data in the data store 104 to which the client 100 wants access is protected, so that it is accessible to only certain users of the computer system. Additional information than that provided in the communication 2, such as context information describing an environment in which the operation is to be performed (e.g., an identity of a user issues the request), is therefore required and must be retrieved. The component 106 may then send out communications 3 and 5 to other components of the computer system, including client 100 and server 108, to gather this additional information, and may receive the responses 4 and 6 with this additional information. The component 106 can then determine, using both the original information from the server 102 and the additional information, whether the operation is permitted by applying rules maintained by the component 106, and inform the server 102 in communication 102 to permit the operation. In communication 8, the server 102 requests the data from the data store 104, receives the data in communication 9, and provides it to the client 100 in communication 10.
In the process illustrated in FIG. 1 only one component 106 evaluates an operation. In some systems, multiple different components may analyze the same operation for different reasons. Typically, each component that makes an evaluation does so in response to an event notifying the component of the occurrence of the relevant operation. A filter driver for each component typically is placed in the input/output (I/O) stack of the computer's operating system to analyze incoming communications and determine whether the communication relates to an operation to be analyzed by the component. Each component may then handle the operation as it receives the event through the I/O stack.